O objetivo desse lab é o de auto-aprendizagem em uma ferramenta de deep learning. Em particular vamos aprender a implementar e interpretar uma rede do tipo multilayer perceptron (MLP) em R e Keras, um framework de deep learning.
Para isso você deve:
Ler o tutorial: https://www.datacamp.com/community/tutorials/keras-r-deep-learning (Links para um site externo)Links para um site externo Implementar os passos descritos no tutorial e organizá-los em um RMD com seus próprios comentários em português. A tarefa é basicamente reescrever o tutorial com suas próprias palavras, em português, e eventualmente de forma mais sucinta já o que o tutorial original é bastante extenso. Você pode adicionar explicações, código e dados que não estão no tutorial original, na verdade você é encorajado a fazer isso. Os critérios para correção serão: Facilidade em seguir o seu tutorial Se o código executa corretamente Bônus: Testar MLP na predição de votação do lab anterior e reportar o resultado.
A entrega deve ser o envio do .Rmd e publicação no Rpubs. Quando for publicar no Rpubs não esquecer de fazer referência ao tutorial original.
Keras é um pacote que oferece funções para o estudo sobre modelos abordando deep learning no R.
Esse tutorial terá como foco o MLP (Multi-Layer Perceptron), um tipo de Rede Neural Artificial que possui pelo menos três camadas internas compostas por nós (neurônios).
Primeiro, importaremos o pacote devtools para poder instalar os pacotes que serão necessários:
library(devtools)
Em seguida, são importados o keras e tensorflow, para isso é necessário tê-los instalados:
# install_github("rstudio/tensorflow")
# install_github("rstudio/keras")
library(keras)
library(tensorflow)
# install_keras()
Os dados podem ser carregados de 3 maneiras diferentes:
Utilizando os datasets do keras:
mnist <- dataset_mnist()
cifar10 <- dataset_cifar10()
imdb <- dataset_imdb()
Criando nosso próprio dataset com dados aleatórios a partir da função matrix:
dados <- matrix(rexp(1000*784), nrow = 1000, ncol = 784)
labels <- matrix(round(runif(1000 * 10, min = 0, max = 9)),
nrow = 1000, ncol = 10)
Importando de um arquivo CSV (ou outro formato):
iris <- read.csv(url("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"), header = FALSE)
# Cabeçalho do dataset
head(iris)
## V1 V2 V3 V4 V5
## 1 5.1 3.5 1.4 0.2 Iris-setosa
## 2 4.9 3.0 1.4 0.2 Iris-setosa
## 3 4.7 3.2 1.3 0.2 Iris-setosa
## 4 4.6 3.1 1.5 0.2 Iris-setosa
## 5 5.0 3.6 1.4 0.2 Iris-setosa
## 6 5.4 3.9 1.7 0.4 Iris-setosa
# Estrutura
str(iris)
## 'data.frame': 150 obs. of 5 variables:
## $ V1: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ V2: num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ V3: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ V4: num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ V5: Factor w/ 3 levels "Iris-setosa",..: 1 1 1 1 1 1 1 1 1 1 ...
# Dimensões
dim(iris)
## [1] 150 5
Utilizaremos esse dataset que contém dados sobre as dimensões de flores de Ãris e suas respectivas classificações. Mais detalhes em: http://archive.ics.uci.edu/ml/datasets/Iris
É importante saber que todas as flores possuem sépalas e pétalas. A sépala possui tipicamente um tom verde, enquanto as pétalas são coloridas. Isso é diferente nas Ãris, como pode ser visto nas imagens: